home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
C++
/
Applications
/
PICSee Dust 1.01
/
Quaternary Source
/
StringUtils.c
< prev
next >
Wrap
Text File
|
1995-11-10
|
3KB
|
112 lines
///--------------------------------------------------------------------------------------
// StringUtils.c
//
// Created: 12/17/91 at 12:35:35 AM
// By: Tony Myles
//
// Copyright: © 1991-93 Tony Myles, All rights reserved worldwide.
///--------------------------------------------------------------------------------------
#ifndef __MEMORY__
#include <Memory.h>
#endif
#ifndef __STRINGUTILS__
#include "StringUtils.h"
#endif
///--------------------------------------------------------------------------------------
// PStrCpy
///--------------------------------------------------------------------------------------
void PStrCpy(
Str255 srcStr,
Str255 dstStr)
{
BlockMove(srcStr, dstStr, 1 + srcStr[0]);
}
///--------------------------------------------------------------------------------------
// PStrCat
///--------------------------------------------------------------------------------------
void PStrCat(Str255 appendStr, Str255 dstStr) {
BlockMove(appendStr + 1, dstStr + dstStr[0] + 1, appendStr[0]);
dstStr[0] += appendStr[0];
}
// ==========================================================================
void PStrPad(Str255 destStr, short padToLen, register char padChar) {
register short i;
if (padToLen > 255)
padToLen = 255;
for (i = destStr[0] + 1; i <= padToLen; i++) {
destStr[i] = padChar;
}
destStr[0] = padToLen;
} // END PStrPad
// ---------------------------------------------------------------------------
void PStrPadCpy(Str255 srcStr, Str255 destStr, short padToLen, register char padChar) {
register short i;
BlockMove((Ptr)&srcStr[0], (Ptr)&destStr[0], srcStr[0] + 1);
if (padToLen > 255)
padToLen = 255;
for (i = destStr[0] + 1; i <= padToLen; i++) {
destStr[i] = padChar;
}
destStr[0] = padToLen;
} // END PStrPadCpy
// ---------------------------------------------------------------------------
// PStrDelete
// ---------------------------------------------------------------------------
// When specifying the starting location, remember to include the length byte
// i.e. to start deleting at first char, use 1 (not 0).
void PStrDelete(Str255 srcStr, short start, short length) {
// Buggy. Fix later
return;
if ((start - 1) == srcStr[0])
srcStr[0]--; // i.e. delete last char, since we start at last char.
else {
srcStr[0] -= length;
BlockMove(&srcStr[start + length], &srcStr[start], 256 - (start + length));
}
} // END PStrDelete
// ---------------------------------------------------------------------------
// PStrReplaceSuffix
// ---------------------------------------------------------------------------
Boolean PStrReplaceSuffix(Str255 searchSuffix, Str255 replaceSuffix, Str255 destStr) {
Str255 destStrCpy;
short destStrLen = destStr[0];
short backwardsOffset;
Boolean found;
PStrCpy(destStr, destStrCpy);
backwardsOffset = destStrCpy[0] - searchSuffix[0];
destStrCpy[backwardsOffset] = searchSuffix[0];
found = EqualString(searchSuffix, &destStrCpy[backwardsOffset], false, true);
if (found) {
destStr[0] -= searchSuffix[0];
PStrCat(replaceSuffix, destStr);
}
return(found);
} // END PStrReplaceSuffix